package com.marmot.cloud.framework.core.exception;

/**
 * 持久化异常类，用于表示持久化操作过程中可能出现的异常情况。
 * 继承自 BusinessException，是业务异常的一种特例。
 */
public class PersistException extends BusinessException {

    /**
     * 构造函数，通过 ErrorInfo 对象创建异常实例。
     *
     * @param errorInfo 异常信息
     */
    public PersistException(ErrorInfo errorInfo) {
        super(errorInfo);
    }

    /**
     * 构造函数，通过错误消息创建异常实例。
     *
     * @param msg 错误消息
     */
    public PersistException(String msg) {
        super(msg);
    }

    /**
     * 构造函数，通过错误码和消息创建异常实例。
     *
     * @param code 错误码
     * @param msg  错误消息
     */
    public PersistException(String code, String msg) {
        super(code, msg);
    }

    /**
     * 构造函数，通过错误码、消息和原因创建异常实例。
     *
     * @param code  错误码
     * @param msg   错误消息
     * @param cause 异常原因
     */
    public PersistException(String code, String msg, Throwable cause) {
        super(code, msg, cause);
    }

    /**
     * 创建 PersistException 实例的静态工厂方法，通过错误码和消息创建异常实例。
     *
     * @param code 错误码
     * @param msg  错误消息
     * @return PersistException 实例
     */
    public static PersistException of(String code, String msg) {
        return new PersistException(code, msg);
    }

    /**
     * 创建 PersistException 实例的静态工厂方法，通过错误消息创建异常实例。
     *
     * @param msg 错误消息
     * @return PersistException 实例
     */
    public static PersistException of(String msg) {
        return new PersistException(msg);
    }

    /**
     * 创建 PersistException 实例的静态工厂方法，通过 ErrorInfo 对象创建异常实例。
     *
     * @param errorInfo 异常信息
     * @return PersistException 实例
     */
    public static PersistException of(ErrorInfo errorInfo) {
        return new PersistException(errorInfo);
    }
}
